vlwkaos' digital garden

TypeScript - field initialize order

문제

  • ES6 작동 방식에 의해 일반적인 OOP와 다른 순서로 필드가 초기화 되므로 상속구조를 만들시 주의해야한다.
  • 주로 마주하는 문제는 상속받는 클래스에서 선언했으나 부모 클래스의 값으로 변경되어있거나, transpile시점에서 undefined로 초기화되는 경우이다.
  • derived의 memberProperty는 base의 생성자에서 파생되는 어느 스코프에도 존재하지 않는다.
  • babel transpiling중에 class field undefined 처리

해결

  • derived class에서 constructor이외 스코프에서 초기화하는 경우 declare 옵션을 사용하고 클래스 내부에서도 초기화가 아닌 type으로 존재한다는 declare로 필드를 선언해야한다.
  • [[프론트 환경설정 특이케이스]]

연관 링크

TypeScript - field initialize order